変数sum
を初期化していないからでは?
- int sum;
+ int sum = 0;
Like!
Atcoder Begginer Contest 352のC問題についてです。出力結果が異常な大きさになってしまいました。原因がさっぱりわかりません。だれか修正していただけないでしょうか。また、もっとスマートな回答があれば教えてください。学びになります。
問題は以下のURLをご参照ください。
https://atcoder.jp/contests/abc352/tasks/abc352_c
//入力例
3
4 10
5 8
2 9
//出力結果
-835060390
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
cin >> N;
vector<int> a(N);
vector<int> b(N);
vector<int> C(N);
for(int i =0;i < N;i++){
cin >> a[i] >> b[i];
}
for(int i = 0;i < N;i++){
C[i] = b[i] - a[i];
}
sort(C.begin(), C.end());
int max = C.back();
int sum;
for(int i = 0;i < N;i++){
sum += a[i];
}
cout << sum + max;
}
変数sum
を初期化していないからでは?
- int sum;
+ int sum = 0;
@nama40024
Questioner先日もありがとうございました。初期化したら正しく動作しました。こういうミス本当に多いので気を付けます。ありがとうございました。
もっとスマートな回答があれば教えてください
スマートか分かりませんが、以下でどうでしょうか。
#include<bits/stdc++.h>
using namespace std;
int main(){
int N;
cin >> N;
int max = 0;
int sum = 0;
for(int i = 0; i < N; i++){
int a, b;
cin >> a >> b;
sum += a;
if(max < b - a) max = b - a;
}
cout << sum + max;
return 0;
}
@nama40024
Questioner1ループごとに顔の長さを判断していき、これまでの最長より大きければ更新するということでしょうか。こちらの方がソートを使うよりもスマートですね。ありがとうございます。
解決でよければ、当Q&Aをクロースしてくださいね